package com.fivefu.core.hillstone.services;

import com.alibaba.fastjson.JSONObject;
import com.fivefu.core.hillstone.entity.DbHillstoneChannel;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 大华通道表 服务类
 * </p>
 *
 * @author 
 * @since 2022-08-23 15:26:08
 */
public interface DbHillstoneChannelService extends IService<DbHillstoneChannel> {

    /**
     * 编辑通道信息
     * @param channel
     */
    void editDbHillstoneChannel(DbHillstoneChannel channel);

    /**
     * 获取实时监视URI
     * @param channelCode 通道编码
     * @param subType 码流类型(0:主码流、1:辅流1、2:辅流2。默认为0主码流)
     * @param scheme 协议类型(本级平台支持RTSP、FLV_HTTP、HLS、RTMP四种，下级平台只支持RTSP。默认RTSP
     */
    JSONObject getRealTimeMonitoringURI(String channelCode, Integer subType, String scheme);

    /**
     * 删除本地多余通道数据
     * @param channelCode    通道编码
     */
    void deleteRedundantData(String channelCode);

    /**
     * 根据通道编码查询相关数据集
     * @param channelCode
     * @return
     */
    List<DbHillstoneChannel> queryChannelList(String channelCode);

    /**
     * 获取本地通道表所有数据信息
     * @return
     */
    List<DbHillstoneChannel> queryAllChannel();

    /**
     * 获取回放URI
     * @param channelCode     通道编码
     * @param stime           回放开始时间
     * @param etime           回放结束时间
     * @param location        录像存储位置(cloud:平台录像，device:设备录像（不要使用）)
     * @param scheme          协议类型，支持RTSP、RTMP、HLS三种。默认RTSP
     * @param duration        有效时间，单位为秒，最长不超过10分钟，默认10分钟
     * @return
     */
    JSONObject getPlaybackURI(String channelCode, String stime, String etime, String location, String scheme, Integer duration);

    /**
     * 根据通道编码查询通道信息
     * @param channelCode      通道编码
     * @return
     */
    DbHillstoneChannel queryChannelByCode(String channelCode);
}
